// js实现类 ES5
// 由于函数始对象 所以写法不是唯一
// function Pf(){}更符合固有思想
// 由于ES6添加了类,所以书写变得跟方便
var Pf = function(name,age){
// 私有属性方法外面不能调用,只有对象方法可以操作,从而起到保护数据的作用
// 私有属性
var secret = '小秘密'
// 私有方法
function secretfn(){
console.log('私有方法')
console.log("my secret is"+secret)
}
// 公共属性方法是每创建一个对象就会创建一个该属性或方法(耗费一定把内存)
// 共有实例属性
this.name = name
this.age = age
//共有实例方法
this.say = function(){
console.log("my name is"+this.name,"my age is"+this.age)
console.log('可以操作私有属性与方法')
secretfn()
}
}
// 静态方法
Pf.f1 = function(){
console.log('我是静态方法,只能用类直接调用,实例对象不能调用')
}
Pf.prototype = {
constructor:Pf,// 这种添加原型方法需要重置制定对象。
// 原型链上的方法为公有方法,由类创建出来的对象会指向该原型,不会重新创建该方法,但是优先级没有对象方法高
// 其优点是节省内存
say:function(){
console.log("原型上的say")
// 原型链上可以拿到共有属性,拿不到私有属性与方法
console.log('我也能拿到数据'+this.name)
}
}
var a = new Pf('ss',22)
a.say()
Pf.f1()
运行直接node
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。